An error may occur in digital data due to external noise or the like at the recording and reproducing time of digital data. Therefore, an error correction code for detecting and correcting the error is used. In the error correction coding, redundant data is added to data at the encoding time and an error of data is corrected based on the redundant data at the decoding time.
As one example of the error correction code, an LDPC code is proposed. The LDPC code is a block code defined by a sparse check matrix and decoded by an iterative decoding process. For example, the LDPC code has an advantage that it has an excellent decoding performance close to Shannon Limit and a structure capable of performing a parallel process suitable for high-speed decoding by use of hardware.
However, when a to-be-decoded sequence is far from a valid code word, an error cannot be corrected even if the decoding process is iteratively performed many times. Therefore, a decoder device that stops a decoding operation at the initial stage of the decoding process for a code word that cannot be decoded is proposed in Jpn. PCT National Publication No. 2008-539623.
In Jpn. PCT National Publication No. 2008-539623, a method for controlling a process of decoding an LDPC coded code word expressed by a bipartite graph between check nodes and variable nodes is described. In this case, each time a message is exchanged between the variable node and the check node, a first total sum of all of messages (Log Likelihood Ratio) received by the variable node is calculated, and a second total sum of all of the absolute values of the first total sums and the decoding process is interrupted in a case where the second total sum decreases or does not vary between two iterative processes and a preset threshold condition is satisfied.
However, the method in Jpn. PCT National Publication No. 2008-539623 has a problem that it takes a long time for calculations because the second total sum used as a criterion for determining whether the decoding process is interrupted or not makes it necessary to calculate the first total sum of all of incident messages received by the variable node for each variable node.